# python为动态语言，允许给实例或者类动态添加属性和方法
# 为了限制实例的属性和方法，我们使用__slots__


class Student(object):
    # 定义允许绑定的属性
    __slots__ = ('name', 'age')


s = Student()
s.name = 'wobegoone'
s.age = 20
# s.score = 88

# 使用__slots__要注意，__slots__定义的属性仅对当前类实例起作用，对继承的子类是不起作用的
# 除非在子类中也定义__slots__，这样，子类实例允许定义的属性就是自身的__slots__加上父类的__slots__


class GraduateStudent(Student):
    __slots__ = ('gender',)
    pass


g = GraduateStudent()
g.score = 100
